/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package OperacionesBD;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import proyectovuelos.AdministradorImpl;
import proyectovuelos.ProgVueloImpl;
import proyectovuelos.Turno;
import proyectovuelos.UsuarioImpl;
import proyectovuelos.VendedorImpl;

/**
 *
 * @author Usuario
 */
public class OperacionesUsuarios {
    
     private static final String SENTENCIA_COMBO3 = "SELECT * FROM turno";
     private static final String sentenciaSQL2 = "SELECT * FROM usuarios";
  
    public static void cargarUsuario() throws SQLException {
        
    }
   
    public static void altaUsuario(UsuarioImpl u) throws SQLException {

        String nomCompleto = u.getNomCompleto();
        int cedula = u.getCedula();
        String Password = u.getPasword();
        String tipo = u.getTipo();
        String usuario = u.getUsuario();
        
        Date fechaHab = null;
        Turno turno = null;
        
        if (u instanceof ProgVueloImpl) {
            fechaHab = ((ProgVueloImpl)u).getFechaHabilitacion();
        } else if (u instanceof VendedorImpl) {
            turno = ((VendedorImpl)u).getTurno();
        }

        ConexionBD conex = new ConexionBD();
        int fallo = conex.altaUsuario("INSERT INTO usuarios (NombreCompleto, Usuario, Password, Tipo, Cedula, FechaHabilitacion, Turno) VALUES  (" + nomCompleto + "," + usuario + "," + Password + "," + tipo + "," + cedula + "," + fechaHab + "," + turno + ")");
       // if fallo = 0 entonces no inserto nada, sino no hacer nada
        conex.cerrarConexionBD();

    }

    public static void bajarUsuario(UsuarioImpl u) throws SQLException {

        ConexionBD conex = new ConexionBD();

        String sentencia = "";

        if (u instanceof AdministradorImpl) {
            sentencia = "DELETE FROM usuarios WHERE cedula=" + u.getCedula();
        }

        if (u instanceof ProgVueloImpl) {
            sentencia = "DELETE FROM usuarios WHERE cedula=" + u.getCedula();
        }

        if (u instanceof VendedorImpl) {
            sentencia = "DELETE FROM usuarios WHERE cedula=" + u.getCedula();
        }

        Statement st = conex.conectarBD();
        st.executeUpdate(sentencia);
        st.close();

    }

    public static void modificarUsuario(UsuarioImpl u) throws SQLException {

        int cedula = u.getCedula();
        String nomCompleto = u.getNomCompleto();
        String Password = u.getPasword();
        int idFuncionario = u.getIdFuncionario();
        String tipo = u.getTipo();
        String usuario = u.getUsuario();

        ConexionBD conex = new ConexionBD();
        int fallo2 = conex.altaUsuario("UPDATE usuarios SET NombreCompleto='" + nomCompleto + "', Password='" + Password + "', idFuncionario='" + idFuncionario + "', Tipo='" + tipo + "' WHERE Cedula=" + cedula +"");
       
        conex.cerrarConexionBD();
    }
    
        public static DefaultComboBoxModel cargarCombo2() throws SQLException {
        ResultSet rs = null;
        
        DefaultComboBoxModel modeloCombo = new DefaultComboBoxModel();
        try {
           ConexionBD conex = new ConexionBD();
           
           rs = conex.cargarCombo2(SENTENCIA_COMBO3);
            while (rs.next()) {
                modeloCombo.addElement(rs.getString("idTurno"));
            }
            conex.cerrarConexionBD();
            return modeloCombo;
        } catch (Exception p) {
            System.out.println(p);
        } finally {
            rs.close();
            return modeloCombo;
        }
    }
    
    public static DefaultTableModel listarUsuarios() throws SQLException{
        ResultSet rs = null;
        Connection conn = null;
        Statement st = null;
        ResultSetMetaData rsm = null;
   
        DefaultTableModel modeloTable = new DefaultTableModel();
        
        try {
         
          Class.forName("org.gjt.mm.mysql.Driver");
            conn  = DriverManager.getConnection ("jdbc:mysql://localhost:3306/proyectovuelos?user=root&password=");
            st = conn.createStatement();
            rs = st.executeQuery("SELECT * FROM usuarios");
            
             rsm = rs.getMetaData();
             int cantidadColumnas = rsm.getColumnCount();
             
             for (int i = 1; i <= cantidadColumnas; i++) {
  modeloTable.addColumn(rsm.getColumnLabel(i));
 }
                
                while (rs.next()) {
  Object[] fila = new Object[cantidadColumnas];
  for (int i = 0; i < cantidadColumnas; i++) {
    fila[i]=rs.getObject(i+1);
  }
  modeloTable.addRow(fila);
 }
            st.close();
            rs.close();
            return modeloTable;
        } catch (Exception p) {
            System.out.println(p);
        } finally {
            conn.close();
        }
         return modeloTable;
}

    
public static DefaultTableModel listarUsuarioBuscado() throws SQLException{
        ResultSet rs = null;
        //Connection conn = null;
        Statement st = null;
        //ResultSetMetaData rsm = null;
   
      
        
        try {
            
            DefaultTableModel modeloTable = new DefaultTableModel();
            ConexionBD conex = new ConexionBD();
            String codBuscar = "";
         
      
            codBuscar = JOptionPane.showInputDialog("Ingrese Nombre Completo a consultar");
            rs = st.executeQuery("SELECT NombreCompleto FROM usuarios");
            boolean encontrado = false;
           
               while(rs.next()) {
                   if(codBuscar.equals(rs.getObject("NombreCompleto"))){
                   }
                   encontrado = true;
                   break;
               }
               String SQL = "SELECT * FROM usuarios WHERE NombreCompleto="+codBuscar+"";
               
               modeloTable = conex.retornarDatos(SQL);
               
               if(encontrado==false){
                    JOptionPane.showMessageDialog(null, "NO se pudo Listar los Usuarios de la Base de Datos. ERORR!!");
                }
            //st.close();
            //rs.close();
            //return modeloTable;
        } catch (Exception p) {
            System.out.println(p);
        } 
         return null;
}
 
}